#include<bits/stdc++.h>
using namespace std;

#define MAXN 300005

vector<int> g[MAXN];

int n,m;
int ru,rv;
int ans=0;

int f[MAXN];

void dp(int u,int fa){
	int fm[2]={0,0};
	for(auto v:g[u]){
		if(v==fa){
			continue;
		}
		
		dp(v,u);
		
		
		if(f[v]>fm[1]){
			fm[1]=f[v];
			if(fm[1]>fm[0]){
				swap(fm[1],fm[0]);
			}
		}
	}
	
	f[u]=fm[0]+g[u].size()-1;
	
	ans=max(ans,fm[0]+fm[1]+(int)g[u].size()+(int)(u==1));
	
	return;
}

int main(){
	ios::sync_with_stdio(false);
	
	cin>>n>>m;
	
	for(int i=1;i<=n-1;i++){
		cin>>ru>>rv;
		g[ru].push_back(rv);
		g[rv].push_back(ru);
	}
	
	dp(1,0);
	
	printf("%d\n",ans);
	
	return 0;
}